package vip.xiaonuo.invoice.core.adapter.dto.result;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

/**
 * 数族发票查询结果DTO
 *
 * @author AI Assistant
 */
@Getter
@Setter
@ToString(callSuper = true)
public class InvoiceResultDtoOfShuZU extends InvoiceResultDto {

    @Schema(description = "发票类型")
    private content content;

    @Getter
    @Setter
    public static class content {

        /**
         * 发票号码
         */
        @Schema(description = "发票号码")
        private String fphm;

        /**
         * 增值税发票代码
         */
        @Schema(description = "增值税发票代码")
        private String zzfpdm;

        /**
         * 增值税发票号码
         */
        @Schema(description = "增值税发票号码")
        private String zzfphm;

        /**
         * 购方税号
         */
        @Schema(description = "购方税号")
        private String gfsh;

        /**
         * 购方名称
         */
        @Schema(description = "购方名称")
        private String gfmc;

        /**
         * 销方税号
         */
        @Schema(description = "销方税号")
        private String xfsh;

        /**
         * 销方名称
         */
        @Schema(description = "销方名称")
        private String xfmc;

        /**
         * 发票类型代码
         */
        @Schema(description = "发票类型代码")
        private String fplxdm;

        /**
         * PDF文件URL
         */
        @Schema(description = "PDF文件URL")
        private String pdfUrl;

        /**
         * OFD文件URL
         */
        @Schema(description = "OFD文件URL")
        private String ofdUrl;

        /**
         * XML文件URL
         */
        @Schema(description = "XML文件URL")
        private String xmlUrl;

        /**
         * 开票日期
         */
        @Schema(description = "开票日期")
        private String kprq;

        /**
         * 开票人
         */
        @Schema(description = "开票人")
        private String kpr;

        /**
         * 合计金额
         */
        @Schema(description = "合计金额")
        private String hjje;

        /**
         * 合计税额
         */
        @Schema(description = "合计税额")
        private String hjse;

        /**
         * 价税合计
         */
        @Schema(description = "价税合计")
        private String jshj;

        /**
         * 出票状态
         */
        @Schema(description = "出票状态")
        private String chzt;


        /**
         * 商品明细列表
         */
        @Schema(description = "商品明细列表")
        private List<MxList> mxList;
    }

    /**
     * 商品明细内部类
     */
    @Getter
    @Setter
    public static class MxList {

        /**
         * 序号
         */
        @Schema(description = "序号")
        private Integer xh;

        /**
         * 单价
         */
        @Schema(description = "单价")
        private String dj;

        /**
         * 单位
         */
        @Schema(description = "单位")
        private String dw;

        /**
         * 发票行性质
         */
        @Schema(description = "发票行性质")
        private String fphxz;

        /**
         * 规格型号
         */
        @Schema(description = "规格型号")
        private String ggxh;

        /**
         * 金额
         */
        @Schema(description = "金额")
        private String je;

        /**
         * 税额
         */
        @Schema(description = "税额")
        private String se;

        /**
         * 税率
         */
        @Schema(description = "税率")
        private String sl;

        /**
         * 商品数量
         */
        @Schema(description = "商品数量")
        private String spsl;

        /**
         * 商品编码
         */
        @Schema(description = "商品编码")
        private String spbm;

        /**
         * 商品名称
         */
        @Schema(description = "商品名称")
        private String spmc;

        /**
         * 优惠政策标识
         */
        @Schema(description = "优惠政策标识")
        private String yhzcbs;

        /**
         * 零税率标识
         */
        @Schema(description = "零税率标识")
        private String lslbs;

        /**
         * 增值税特殊管理
         */
        @Schema(description = "增值税特殊管理")
        private String zzstsgl;
    }
}
